perm filename HELP.DAT[PNT,HE]1 blob
sn#472668 filedate 1979-09-07 generic text, type T, neo UTF8
COMMENT The format of this file is as follows: each entry
begins with an ∀ and ends with a ∃. Within
each entry, the fields are separated by back slashes (\) separating
the entry number, keyword,and the data. A formfeed is inserted
after every tenth message. The message area begins after the symbol percent symbol.
If you make any changes to this file, it will not be permanent.
Please do not insert any new ∀∃\ or percent signs into this file if you write it
with E. Note also that all tabs are replaced by the right number of spaces.
If this file gets messed up, a fresh copy can be generated by
executing HELP0.SAI.
%
∀\1\?\displays this information\∃
∀\2\\
Type one of the keywords on the left column. If you
don't understand any of this, type HELP\∃
∀\3\HELP\help on the use of the this helper\∃
∀\4\\ This helper is organized as as a directed
graph with loops, and to each node there corresponds a message.
Terminal nodes have no keyword associated with them, whereas
inside nodes do.
If the message is too long to fit on the screen,
<formfeed> and <vert tab> may be used to scroll up and down the
screen the way E does it. If the message can fit in one screenful
these will have no effect.
At any time in the help mode, the following keywords
are valid:
a) The list of keywords on the left hand column of the
screen.
b) The list of keywords on the left hand column of the
screen the previous time.
c) The list of keywords on the keyword stack at the
bottom of the screen.
If you type a valid keyword, that keyword will appear
as the last element of the keyword stack. Since keywords
are not repeated on the keyword stack, this means that sometimes
the keyword stack may be trimmed back.
If an invalid keyword is typed, it is as if you typed ?
but the keyword stack will not be cut back.\∃
∀\5\??\ideas for other help topics\∃
∀\6\\ If there is a help topic that you think should
be here that isnt, please send a message to MSM about it, with
suggestions for the text of the message and at what level it should be
invoked.\∃
∀\7\UP\goes up a level on the keyword stack\∃
∀\8\MENU\gives a list of toplevel instructions\∃
∀\9\RES\gives a list of reserved words\∃
∀\10\\These are reserved words:
ABORT ACOS AFFIX ALL AND ARRAY ASIN ATAN2 AXIS
BAIL BEGIN BY
CASE CENTER CLOSE COBEGIN COEND COMMENT CONSTRUCT COS
DDT DEFINE DELETE DISPLAY DO DRIVE
ECHOOFF ECHOON EDIT EEDIT END EQV EVAL EVENT
EXIT EXP {FCONSTRUCT} FOR FRAME FUNCTION
GATHER GRAPH HELP IF INT INTO INV LOG
MAX MIN MOD MOVE MOVEX MOVEY MOVEZ
NODISPLAY NOUPDATE ON OPEN OR ORIENT
PARK POS PRINT PROCEDURE PROMPT QBAIL QREAD
READ READWRIST REDEFINE REDISPLAY REFERENCE
REL RENAME RESETSTATUS RETURN ROT
SCALAR SETBASE SETSTATUS SETSTIFF SHOW SIGNAL
SIN SQRT STOP STOPMESSAGE SUBTREE
TAN TO TRANS UNFIX UNIT UPDATE
VALUE VECTOR VTT05_OFF VT05_ON WAIT
WHILE WRIST WRITE WRT
XCOORD XOR YCOORD XCOORD\∃
∀\11\RESH\gives one line descriptions of the reserved words\∃
∀\12\\ABORT stops the current action and throws you into DDT
ACOS arc cosine
AFFIX affix statement
ALL reserved word used with WRITE, DELETE, etc
ARRAY used for array declarations
ASIN arc sine
ATAN2 arctangent taking two arguments
BAIL calls the SAIL debugger: not available in all versions
BEGIN denotes beginning of a block
BY reserved word used in MOVE, OPEN, CLOSE, AFFIX
CASE control statement
CLOSE close the hand
COBEGIN parallel control
COEND indicates end of COBEGIN block
COMMENT comment statment: non executabl statement
CONSTRUCT makes a trans out of three vectors
COS cosine function
DDT throws you into DDT: you better know what you are doing
DEFINE macro definitions
DELETE deletes variables
DISPLAY displays appropriate data types
DO loop
DRIVE moves individual joints
ECHOOFF suppresses printing of input file: normal mode for QREAD
ECHOON prints out input file: normal mode for READ
EDIT edits values of variable or macro
EEDIT swaps to E for editing
END ends a block
≡ EQV equivalence
EVAL direct evaluation
EVENT event declaration
EXIT exits from POINTY, can resume by typing CONT
EXP exponentiation
FCONSTRUCT constructs frame from 3 transes
FOR loop iteration
FRAME frame definition or declaration
FUNCTION no longer valid
GATHER to gather data
HELP gets the help moe
IF if control statement
INT integer part of a scalar expression
INTO used for COPY/MERGE
INV inverse trans
LOG logarithm
MAX maximum of two expressions
MIN minimum of two scalar expressions
MOD modulus (remainder)
MOVE general motion statement
MOVEX motion in the X direction
MOVEY motion in the Y direction
MOVEZ motion in the Z direction
NODISPLAY shuts off the display
NOPUDATE does not update the display
ON condition monitor or used in motion statement
OPEN pertains to the hand opening
∨ OR boolean OR operator
ORIENT the rotation part of a frame or trans
PARK parks the arm
POS vector part of a frame or trans
PRINT prints arguments on the VT05
PROCEDURE procedure declaration
PROMPT waits for user to type P at the VT05
QBAIL like BAIL, but takes input from QUERY.TXT on current PPN
QREAD like READ, but does not print on terminal what is being read
READ reads in the appropriate file
READWRIST reads the wrist
REDEFINE changes definition of a macro
REDISPLAY gets the normal table mode
REFERENCE type of argument used for parameter specification
REL relative positons
RENAME change the name of a variable
RESETSTATUS change the value of compiler parameters to 0
RETURN gets out of a procedure
ROT the rotation operator or declaration
SCALAR used for declarations
SETBASE assumes there is zero force on the wrist
SETSTATUS changes the values of compiler parameters
SETSTIFF sets wrist stiffness matrix
SHOW displays values of a list of variables
SIGNAL signals the event
SIN the sine function
SQRT the square root function
STOPMESSAGE message received from interjob mail system is ended
TAN tangent function
TO used in AFFIX,MOVE,OPEN
TRANS used for declaration and to make trans data type
UNFIX the UNFIX statement
UNIT computes a unit vector
UPDATE updates the display
VALUE used for declaration of procedure parameters
VECTOR constructing data type or declaring vectors
VT05_OFF turns off updating of VT05
VT05_ON turns on updating of VT05 (default)
WAIT used with event
WHILE loop
WRIST reads the force wrist readings
WRITE writes AL declarations into a file
WRT operator
XCOORD refers to x-coordinate of a vector,trans or frame
XOR does exclusive or
YCOORD refers to y-coordinate of a vector,trans or frame
ZCOORD refers to z-coordinate of a vector,trans or frame\∃
∀\13\DISP\describes display commands\∃
∀\14\\The display commands relate to the display on the user
and there are several modes of display: the table display mode (the
display you get on starting up), the type display mode, the nodisplay
mode, and the variable display mode.
NODISPLAY takes no arguments, shuts off displays
REDISPLAY gets you back into the table display mode
DISPLAY <type> displays all the variables of type <type>,
where <type> may be SCALAR,VECTOR,ROT,TRANS,FRAME,
EVENT,MACRO,PROCEDURE
UPDATE forces immediate update of the display
NOUPDATE prevents updating of the display
SHOW <variable list> displays the variables in the <variable list>\∃
∀\15\ELF\gives information on the ELF, or PDP-11 interface\∃
∀\16\\ The ELF is the name given to the interface
between the PDP-10 and PDP-11. Before POINTY can be run successfully,
the runtime system must be loaded and started on the ELF, by means
of the DO POINTY[PNT,HE] command. This will start the program on
the PDP-11, but sometimes there may be errors that cause the
program to stop executing and enter DDT. When that happens,
try to find out what is wrong, and get it to continue executing,
or the interactive part on the PDP-10 will not work.\∃
∀\17\VT05\describes VT05\∃
∀\18\\The VT05 is a terminal directly connected to the PDP-11.
It prints out the status of the arm joints and limits.
VT05_ON prints out the joint angles continuously;
VT05_OFF shuts off the printing of joint angles on VT05\∃
∀\19\OPER\shows available operators and functions\∃
∀\20\LOGIC\gives a list of logical operators\∃
∀\21\RELAT\list of relational operators\∃
∀\22\ARITH\gives a list of arithmetic operators\∃
∀\23\FUNCT\gives a list of available functions\∃
∀\24\SCOPS\list of operations that give a scalar result\∃
∀\25\VTOPS\list of operations giving vector result\∃
∀\26\RTOPS\list of operations giving rot result\∃
∀\27\TROPS\list of operations giving trans/frame result\∃
∀\28\EXOPS\extraction functions\∃
∀\29\IMPOPS\implicit data types\∃
∀\30\\≡ EQV equivalence \∃
∀\31\\∨ OR logical OR\∃
∀\32\\⊗ XOR exclusive OR\∃
∀\33\\∧ AND logical AND\∃
∀\34\\≤ < ≠ = > ≥ relational operators\∃
∀\35\\+ addition\∃
∀\36\\- negation or difference\∃
∀\37\\. vector dot product\∃
∀\38\\* product\∃
∀\39\\/ division\∃
∀\40\\MAX maximum of two operands\∃
∀\41\\MIN minimum of two operands\∃
∀\42\\DIV integer division quotient\∃
∀\43\\MOD integer division remainder\∃
∀\44\\REL vector or trans relative to frame\∃
∀\45\\WRT vector or trans with respect to frame\∃
∀\46\\→ relative transform between two frames or transes\∃
∀\47\\↑ expoenentiation\∃
∀\48\\¬ logical not\∃
∀\49\\ORIENT rotation part of a frame or trans\∃
∀\50\\UNIT conversion of a vector to unit vector\∃
∀\51\\AXIS the axis of rotation\∃
∀\52\\INV inverse of a rot or trans\∃
∀\53\\INT integer part of a scalar\∃
∀\54\\CONSTRUCT constructs a frame from 3 vectors\∃
∀\55\\SQRT square root function\∃
∀\56\\SIN COS TAN ASIN ACOS ATAN2 relevant trig functions\∃
∀\57\\LOG EXP relevant transcendental functions\∃
∀\58\\↓ downward orientation\∃
∀\59\\$ station orientation\∃
∀\60\\α bpark orientation(???)\∃
∀\61\\{EVAL evaluate immediate}\∃
∀\62\\|..| magnitude of scalar or vector, or angle of rotation\∃
∀\63\\( .. ) implicit data type declaration\∃
∀\64\\FRAME VECTOR TRANS ROT make the appropriate data type\∃
∀\65\\XCOORD YCOORD ZCOORD the relevant component of the vector or trans\∃
∀\66\\The following operations return a scalar value.
These abbreviations are used: s = scalar,v = vector,r = rotation,
f = frame,t = trans.
s + s scalar addition
s - s scalar subtraction
s * s scalar multiplication
s / s scalar division
s ↑ s scalar raised to a scalar power
s MAX s maximum
s MIN s minimum
INT(s) integer part of s
s DIV s integer quotient after applying INT to each argument
s MOD s integer remainder after applying INT to each argument
v . v dot product of two vectors
|s| absolute value of a scalar
|v| magnitude of vector (vector norm)
|r| extracts angle of rotation
INSCALAR reads a scalar from the console
Scalar functions
SQRT(s) square root
SIN(s) sine (all trigonometric functions are in degrees)
COS(s) cosine
TAN(s) tangent
ASIN(s) arc-sine
ACOS(s) arc-cosine
ATAN2(s,s) arc-tangent of s/s
LOG(s) natural logarithm
EXP(s) e raised to the s power
s <rel> s returns true if relation is satisfied, else false
possible relations are: <,≤,=,≥,>,≠
s ∧ s logical and
s ∨ s logical or
s ⊗ s logical exclusive or
s ≡ s logical equivalence
¬ s logical not
QUERY reads a boolean from the console\∃
∀\67\\The following operations return a scalar value.
These abbreviations are used: s = scalar,v = vector,r = rotation,
f = frame,t = trans.
VECTOR(s,s,s) construct vector given (x,y,z) components
s * v dilation of a vector
v / s contraction of a vector
v + v vector addition
v - v vector subtraction
v * v vector cross product
r * v rotation of a vector
t * v transformation of a vector
f * v transformation of a vector - shorthand for (station → f) * v
v WRT f vector in station coordinates pointing
the same way as v points in f's coordinate
system. v WRT f ≡ ORIENT(f)*v ≡ (f*v) - POS(f)
UNIT(v) vector of unit length with same direction as v
POS(f) vector position of frame or trans
AXIS(r) axis of rotation\∃
∀\68\\The following operations return a scalar value.
These abbreviations are used: s = scalar,v = vector,r = rotation,
f = frame,t = trans.
ROT(v,s) constructs rotation of s degrees about v
ORIENT(f) orientation of a frame or trans
r * r composition of two rotations (the one on the right
is applied first)\∃
∀\69\\The following operations return a frame value.
These abbreviations are used: s = scalar,v = vector,r = rotation,
f = frame,t = trans.
FRAME(r,v) constructs frame of orientation r at position v
CONSTRUCT(v,v,v) makes a frame: first vector gives the position,
second a point on the x-axis,
third is a point in the xy-plane
f + v translation of a frame
f - v translation of a frame
t * f transformation of a frame
f * f transformation of a frame - shorthand for (station → f) * f\∃
∀\70\\The following operations return a frame value.
These abbreviations are used: s = scalar,v = vector,r = rotation,
f = frame,t = trans.
TRANS(r,v) constructs trans which will cause a rotation of r
followed by a translation of v
f → f transformation which maps from the first frame
to the second
t * t composition of two transes (the one on the right is
applied first)
INV(t) take the inverse of t\∃
∀\71\EXP\valid expressions\∃
∀\72\OPS\types of expressions\∃
∀\73\BNF\bnf definition of expressions\∃
∀\74\PRI\priority of operators\∃
∀\75\\The following are valid expressions:
S=scalar, V=vector,R=rot,T=trans,F=frame
RESULT OPERATION
S: S+S,S-S,S*S,S/S,S↑S,LOG(S),EXP(S),INT(S),S MAX S,S MIN S,
SIN(S),COS(S),TAN(S),ASIN(S),ACOS(S),ATAN2(S,S),
V.V
V: V+V,V-V,V*V,V*S,V/S,(S,S,S),VECTOR(S,S,S)
POS(F),POS(T)
R: ROT(V,S),ORIENT(F)
F: FRAME(R,V)
T: TRANS(R,V),(R,V)\∃
∀\76\\The following is the recursive definition of
expressions in bnf form:
<expression> ::= <befact>{{OR|XOR <befact>}}
<befact> ::= <bterm>{{AND <bterm>}}
<bterm> ::= <arith_exp>| <arith_exp> <rel> <arith_exp>
<arith_exp> ::= {+|-} <term> {{+|- <term>}}
<term> ::= <factor> {{*|/ <factor>}}
<factor> ::= <pfactor>{↑ <pfactor>}
<pfactor> ::= (<expression>) or |<expression>| or
<constant> or <id> or ¬ <pfactor> or funct or
funct(<expression>{{,<expression}})\∃
∀\77\\ The operators in AL generally follow
normal precedence rules, i.e., functions are evaluated first,
followed by exponentiations before multiplications or divisions,
which in turn are performed before additions and subtractions.
The order of operation can be changed by including parentheses
at appropriate points. In an expression where several operators
of the same precedence occur at the same level, the operations
are performed from left to right.
functions, (), | |, NOT
WRT → ↑
* / . MAX MIN DIV MOD
+ -
= ≠ < > ≤ ≥
∧
∨ ⊗
≡\∃
∀\78\FILE\Gives the file management commands\∃
∀\79\PHOTO\Saves the terminal session\∃
∀\80\WRITE\Saves AL declarations, macros, procedures and arrays\∃
∀\81\READ\Reads AL instructions from a disk file\∃
∀\82\\ When you run POINTY, your terminal session
will be logged automatically into POINTY.PHT[PNT,HE].
If you wish to record your session
in another file as well, the command PHOTO <filename> will save
the terminal input into <filename>. Once PHOTO is called, it will
keep on recording until you make another call to PHOTO in which case
it will stop recording in the old file and start recording
into the new file name.
Recording can only be done into a file that is not being
referenced by some other user or job, and the file is written out
every 6 lines or so, so that if you accidentally kill your job
or the system crashes (knock on wood!) you will have a record of
your terminal session.\∃
∀\83\\ The write command permits the state of the world
to be saved on a disk file. The syntax is as follows:
WRITE ALL|<var_list> {INTO <filename>}
The instruction will write the values of all the variables,
arrays, macros or the selected ones into the relevant file.
If the filename is not specified, it will be written into
the last file into which AL declarations were written.\∃
∀\84\\ File input of AL commands can be done by means of
the READ <filename> command. The file will be read to completion unless
<ESCAPE> I is typed.
Note that defaults instructions will not work from file input,
and that statements must be separated by semicolons.\∃
∀\85\ESC_I\ESCAPE I command\∃
∀\86\\ Hitting the <ESC> key followed by an I will
interrupt whatever the PDP-10 is doing and throw you back to the
top level. Any type ahead will be destroyed. If a file is being
read, the rest of the file will be ignored.
This command is useful when there is some error in the
input file which causes the generation of a large number of error
message, and you want to get command back to top level.
A second place this command is useful is when
there is some problem on the 11 and the system seems to be wedged.
In this case it is still possible to save the values of variables
that the PDP-10 knows about and start over.
Typing <esc> I may not work if it is done during
initialization, since the interrupt is not enabled at the
end of initialization.\∃
∀\87\STATE\classes of statements\∃
∀\88\←\assignment statement\∃
∀\89\\ The assignment statement is of the form
<variable> ← <expression>
or component(<variable>) ← <expression>
where component is XCOORD,YCOORD,ZCOORD,POS or ORIENT.
The data types on both sides of the assignment statement must
be the same for the assignment to work, except that trans
expressions may be assigned to frames.
In the first form, if <variable> has not been declared,
POINTY will declare it to be the same data type as the expression
on the right hand side.\∃
∀\90\MOT\list of motion commands\∃
∀\91\OPEN\opens the hand\∃
∀\92\CLOS\similar to OPEN\∃
∀\93\\ The OPEN/CLOSE command applied to
a hand causes the hand opening to go to the desired value.
The syntax is as follows:
OPEN <hand> TO|BY <scalar_exp>
CLOSE <hand> TO|BY <scalar_exp>
permitting the use of an absolute or relative value.
Note that OPEN bhand BY 1 is the same as CLOSE bhand BY -1.\∃
∀\94\MOVE\moves the arm\∃
∀\95\\ The MOVE command specifies the motion of
the specified frame to the desired destination which may
be in absolute or relative terms.\∃
∀\96\CENTER\does a grasp\∃
∀\97\\ The CENTER command does adaptive grasping.
The syntax is as follows:
CENTER <arm>\∃
∀\98\DECL\declaration statement\∃
∀\99\\ Declarations may be made explicitly as
in the case of AL, or implicitly by means of assignment statements.
Explicit declarations may be made by means of the following
syntactical construct:
<data_type> <variable list>
where <data_type> is one of SCALAR, VECTOR, ROT, TRANS, FRAME or
EVENT. <variable list> consists of a series of identifiers
separated by commas.
Arrays may be declared by including ARRAY after the data type,
e.g.
SCALAR ARRAY S[1:10,3:5]
The indices may be constants or scalar expressions. Scalar
arrays will be initialized to 0, vector arrays to nilvect,
rot arrays to nilrot, trans and frame arrays to niltrans.
Macros are declared by means of the DEFINE statement,
while procedures declarations are described in detail elsewhere.\∃
∀\100\CONT\list of control statements\∃
∀\101\IF\IF statement\∃
∀\102\\ The IF statement has the following syntax:
IF <scalar exp> THEN <statement>
or IF <scalar exp> THEN <statement> ELSE <statement>
The IF statement cannot be used as an expression.\∃
∀\103\FOR\FOR statement\∃
∀\104\\ The FOR statement has the following syntax:
FOR <scalar> ← <scal exp> STEP <scal exp> UNTIL <scal exp>
DO <statement>\∃
∀\105\DO\DO statement\∃
∀\106\\ The DO statement has the following syntax:
DO <statement> UNTIL <condition>
<statement> will be executed until <condition> becomes TRUE\∃
∀\107\WHILE\WHILE statement\∃
∀\108\\ The WHILE statement has the following syntax:
WHILE <cond> DO <statement>
<cond> is a scalar expression, and is checked. If it is TRUE( non zero)
<statement> is executed and the <cond> checked and <statement>
executed and the sequence repeated until <cond> becomes FALSE(0).\∃
∀\109\NON_AL\these non AL instructions facilitate interaction\∃
∀\110\EDIT\permits the changing of the value of simple variables\∃
∀\111\\ The EDIT command displays the values of
variables to be displayed in the line editor
and permits the user to change their values. The syntax of the
command is as follows:
EDIT <variable name>
where <variable name> is the name of the appropriate variable to be
changed. Currently only scalars, vectors, transes, rots or frames
variables which are not arrays may be edited. Macros may also be
edited by means of this command.\∃
∀\112\EEDIT\writes the macro in a file and swaps to E\∃
∀\113\\ The EEDIT command takes a macro name
as argument and writes it out into a disk file. The core image
is then saved, and the program swaps to E where the user is
permitted to make changes to the macro body. This is particularly
useful when the macro body is a long one and many changes need
to be made to it. Minor changes may be made by means of the
EDIT command.
When you are satisfied with the macro, type <control>X RUN
and you will get back to POINTY. In the meantime please make sure
not to change the state of the program on the PDP-11.\∃
∀\114\DEL\deletes some or all variables\∃
∀\115\\ The DELETE command deletes all the user
defined variables or some of them. The syntax is as follows:
DELETE ALL
DELETE <variable list>
In the first form, all user declared variables are
deleted after asking for confirmation. In the second form
POINTY will complain if some of the variables in the list are
non existent. In the second form, frame arrays may not be
deleted. Also, individual elements of an array may not
be deleted.
A more liberal form of the instruction is performed
if DELETE is replaced by QDELETE. In the first form, confirmation
is not asked for, while in the second form, POINTY does not
complain if the name in the variable list is non existent\∃
∀\116\ERROR\talks about how to handle errors\∃
∀\117\NOARM\what to do if there is no arm action\∃
∀\118\\ When the arm does not do what you expect
it to do, namely move, there will probably be a message printed
out at the VT05 console which may explain the error.
One of the commonest forms of errors is that the power
supply is off or one of the brake switches is off. For the
former, turn on the arm motor power by hitting the big red
button on the underside of one of the short sides of the table.
Sometimes the arm seems to move in weird fashions.
When this happens, it may be that the arm is not properly
initialised. In this case, just reload and start the system
again.
There are two forms of recovery. RETRY<alt>G at the
VT05 will try to repeat the motion, while <alt>P will go on
with the next instruction\∃
∀\119\PARSE\explanation of error messages\∃
∀\120\\ POINTY is based on the assumption
that it will be used interactively, and any errors encountered
during parsing a statement results in abandoning any further
processing and giving control back to the user.
This may cause grief if there are move commands
and errors occur in a disk file instead of in the terminal
input mode.
It also means that if you are trying to write
a long program interactively you better not make any typing
mistakes, or you will have to start over.
It is much easier to build up programs as macros
and to edit the macros if they do not behave as you think they
should\∃
∀\121\DONE\quits help mode\∃
∀\122\\\∃